#define  _CRT_SECURE_NO_WARNINGS

////string to integer
//class Solution {
//public:
//    int myAtoi(string str)
//    {
//        int i = 0;
//        int symbol = 1;
//        long long sum = 0;
//
//        //remove space
//        while (str[i] == ' ')
//        {
//            i++;
//        }
//
//        if (str[i] == '+')
//        {
//            symbol = 1;
//            i++;
//        }
//        else if (str[i] == '-')
//        {
//            symbol = -1;
//            i++;
//        }
//
//        while (isdigit(str[i]))
//        {
//            sum = (sum * 10) + (str[i++] - '0') * symbol;
//            if (sum > INT_MAX || sum < INT_MIN)
//            {
//                if (sum > INT_MAX)
//                    return INT_MAX;
//                else
//                    return INT_MIN;
//            }
//        }
//        return (int)sum;
//    }
//};

////strings are added
//class Solution {
//public:
//    string addStrings(string num1, string num2)
//    {
//        string s0;
//        s0.reserve(num1.size() > num2.size() ? (num1.size() + 1) : (num2.size() + 1));
//        int end1 = num1.size() - 1, end2 = num2.size() - 1;
//        int carry = 0;
//        while (end1 >= 0 || end2 >= 0)
//        {
//            int val1 = 0;
//            int val2 = 0;
//            if (end1 >= 0)
//                val1 = num1[end1--] - '0';
//            else
//                val1 = 0;
//
//            if (end2 >= 0)
//                val2 = num2[end2--] - '0';
//            else
//                val2 = 0;
//
//            int ret = val1 + val2 + carry;
//            carry = ret / 10;
//            ret %= 10;
//            s0 += ret + '0';
//        }
//
//        if (carry == 1)
//            s0 += '1';
//
//        reverse(s0.begin(), s0.end());
//        return s0;
//    }
//};

////the first unique characters in string
//class Solution {
//public:
//    int firstUniqChar(string s)
//    {
//        int s0[129] = { 0 };
//        for (int i = 0; i < s.size(); i++)
//        {
//            s0[(int)s[i]]++;
//        }
//        for (int i = 0; i < s.size(); i++)
//        {
//            if (s0[(int)s[i]] == 1)
//                return i;
//        }
//        return -1;
//    }
//};

//verify palindrome string
class Solution {
public:
    bool isPalindrome(string s)
    {
        string s0;
        s0.reserve(s.size());
        for (auto& e : s)
        {
            if (isupper(e))
                s0 += tolower(e);
            else if (isalnum(e))
                s0 += e;
        }
        for (int i = 0, j = s0.size() - 1; i < j; i++, j--)
        {
            if (s0[i] != s0[j])
                return false;
        }
        return true;
    }
};